/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Modelo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import javax.swing.JOptionPane;
/**
 *
 * @author Jorge Murillo
 */
public class UsuarioModelo {
ConexionModelo conexion=new ConexionModelo();
	private transient Connection con;
	ResultSet rs;

   


 public void setNuevoUsuario(Usuario usuar) throws SQLException {// insertar datos a la base de datos
       if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        PreparedStatement pstmt=null;
        try{

                pstmt=con.prepareStatement("insert into Usuario values(?,?,?,?,?,?,?,?,?)");
                pstmt.setString(1,  usuar.getCodigo());
                pstmt.setString(2,  usuar.getCedula());
                pstmt.setString(3,  usuar.getNombre());
		pstmt.setString(4,  usuar.getApellido());
                pstmt.setString(5,  usuar.getDireccion());
                pstmt.setString(6,  usuar.getCodigoSucursal());
                pstmt.setString(7,  usuar.getNickname());
                pstmt.setString(8,  usuar.getPassword());
                pstmt.setBoolean(9,  usuar.isEstado());
		pstmt.executeUpdate();

        }finally{
               if( pstmt!=null )
                  pstmt.close();
        }
    }

 /**
  * Actualizar donde consulta cedula o codigo para actualizar ese registro
  * @param clie
  * @param consulta
  * @throws SQLException
  */
  public void actualizarUsuario(Usuario usuar,String consulta) throws SQLException {// insertar datos a la base de datos
       if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        PreparedStatement pstmt=    null;
        try{

                pstmt=con.prepareStatement("update Usuario set "
                        + "cedula='" + usuar.getCedula() + "',"
                        + "nombre='" + usuar.getNombre() + "',"
                        + "apellido='" + usuar.getApellido() + "',"
                        + "direccion='" + usuar.getDireccion() + "', "
                        + "codigoSucursal='" +  usuar.getCodigoSucursal() + "',"
                        + "nickname='" + usuar.getNickname()+ "',"
                        + "password=" + usuar.getPassword()
                        + "estado=" + usuar.isEstado()
                        + " where cedula='" + consulta +"'");
		pstmt.executeUpdate();

        }finally{
               if( pstmt!=null )
                  pstmt.close();
        }
    }

 /**
  * Consultar cedula o codigo   
  * @param consulta
  * @throws SQLException
  */
  public String[] consultaUsuario(String consulta) throws SQLException{
      if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

      String datos[]=new String[9];
      PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            pstmt=con.prepareStatement("select * from usuario where cedula='"+ consulta + "'");//probando
            rs=pstmt.executeQuery();

            while(rs.next()){               
                datos[0]=rs.getString(1);
                datos[1]=rs.getString(2);
                datos[2]=rs.getString(3);
                datos[3]=rs.getString(4);
                datos[4]=rs.getString(5);
                datos[5]=rs.getString(6);
                datos[6]=rs.getString(7);
                datos[7]=rs.getString(8);
                datos[8]=rs.getString(9);
            }
  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}
        return datos;
  }

 /**
  * Consultar cedula o codigo y dato es el valor a cambiar,
  * retorna nickname y password
  * @param clie
  * @param consulta
  * @throws SQLException
  */
  public String[] consultaUsuarioPassword(String consulta) throws SQLException{
     if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

      String datos[]=new String[2];
      PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            pstmt=con.prepareStatement("select nickname,password from usuario where nickname='"+ consulta + "'");//probando
            rs=pstmt.executeQuery();

            while(rs.next()){
                datos[0]=rs.getString(1);
                datos[1]=rs.getString(2);
            }
  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}
        return datos;
  }

  /**
  * Consultar cedula o codigo   
  * @param nickname
  * @throws SQLException
  */
  public Usuario getUsuario(String nickname) throws SQLException{
      if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        Usuario usuario=new Usuario();
        PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            pstmt=con.prepareStatement("select * from usuario where nickname='"+ nickname + "'");//probando
            rs=pstmt.executeQuery();

            while(rs.next()){
                usuario.setCodigo(rs.getString(1));
                usuario.setCedula(rs.getString(2));
                usuario.setNombre(rs.getString(3));
                usuario.setApellido(rs.getString(4));
                usuario.setDireccion(rs.getString(5));
                usuario.setCodigoSucursal(rs.getString(6));
                usuario.setNickname(rs.getString(7));
                usuario.setPassword(rs.getString(8));
                usuario.setEstado(rs.getBoolean(9));
            }
  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}
        return usuario;
  }
  
  /**
   * crea el password, encripta el password
   * @param dato
   */
  public String password(String usuario,String pass) throws SQLException{
      if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

      usuario=usuario.toUpperCase();
      int longitud=usuario.length();
      if(usuario.length()>pass.length())
          longitud=usuario.length();
      else
          longitud=pass.length();    
                  
      int dato[]=new int[longitud];
      int dato1[]=new int[longitud];

      for(int i=0;i<usuario.length();i++)
          dato[i]=usuario.charAt(i);//usuario
      for(int i=0;i<pass.length();i++)        
          dato1[i]=pass.charAt(i);//password
      
      pass="";
      for(int i=longitud-1;i>=0;i--){
          pass+=(char)(dato1[i] + dato[i]);
      }


      return pass;
  }
}// fin clase model

